'''刷穿剑指40天'''
class Solution:
    """前缀和思想：统计列表中满足求和要求的子数组个数"""
    def subarraySum(self,k:int,nums:list):
        ret = 0 #返回值
        pre_sum=0   #前缀和
        pre_dict={0:1}
        for num in nums:
            pre_sum += num
            ret += pre_dict.get(pre_sum-k,0)
            pre_dict[pre_sum]=pre_dict.get(pre_sum,0)+1
        return ret

    #返回一个列表的中心元素下标（中心元素左右侧元素之和相等）
    def pivotIndex(self, nums:list):
        total=sum(nums)
        left_sum=0
        ret=-1
        index=-1 #要用index记录正在遍历元素的下标，不能用nums.index(值）取下标，原因是出现值相同时默认取第一个
        for num in nums:
            index+=1
            if left_sum == total-left_sum-num:
                ret= index
                break   #如果有多个满足要求的下标，默认返回最左边的
            left_sum+=num
        return ret




if __name__=="__main__":
    sol1 = Solution()
    print(sol1.pivotIndex([-1,-1,0,0,-1,-1]))

